package com.iaz.tech.tools.tasks.ability;

import java.util.Map;

/**
 * 日程接口（任务）
 */
public interface IScheduleAble {
    /*
     * 计划的唯一ID 号
     * @return
     */
    long scheduleIdentiyNo();

    /*
     * 计划任务执行开始
     * @return
     */
    long planStartTime();

    /*
     * 任务执行结束时间
     * @return
     */
    long planEndTime();

    /*
     * 循环执行次数， 默认为1
     * @return
     */
    long cycleTimes();

    /*
     * 记录实际开始执行时间
     * @param _time  到毫秒的时间戳
     */
    void registerStatTime(long _time);

    /*
     * 记录实际结束时间
     * @param _time 到毫秒的时间戳
     */
    void registerEndTime(long _time);

    /*
     * 满足执行条件
     * @return
     */
    Boolean confirm();
    /*
     * 获得children
     * @return
     */
    Map<Long, IScheduleAble> children();

    /**
     * 执行计划
     * @param sender
     */
    void execute(Object sender);
    /**
     * 获得Element
     * @return
     */
    IScheduleAble toElement();
    /**
     * 停止任务
     */
    void stop();



}
